1. Field of the Invention
The present invention relates generally to an improved data processing system and more specifically to a computer implemented method, an apparatus, and a computer program product for managing package dependencies for an application installation.
2. Description of the Related Art
Today, software dependencies, usually required during installation, are typically manually entered into data files. For example, an offering originally known as the Red Hat® Package Manager, available from Red Hat Inc., and abbreviated simply hereafter as RPM or as rpm is a package management system that stores software dependency information in data files. Reference to RPM now infers use of a software package file format and software packaged in accordance with the RPM format. Although the RPM package manager was intended primarily for Linux™ distributions, the file format of the package manager has become the package format of the Linux base.
Although originally developed by Red Hat for Red Hat Linux, RPM is now typically used by many other Linux distributions. The package manager has also been ported to operating systems other than Linux, such as Novell® NetWare®, available from Novell Inc., and AIX®, available from IBM®.
In the Linux based system, the package manager “package.spec” file contains a “REQUIRES” field in which the software package creators enter the package dependency information. However, this methodology tends to be error prone. For example, errors occur because needed packages can easily be left out of the list, or files that are not truly required can be added to the list when not needed or used. Typically, if the package author is unclear about file and package dependencies, the author will choose to be conservative and include a questionable package or file.
An additional problem related to current package dependency tools is that the tools typically do not take into account the portion of the package actually used. For example, a component known as the “tpm-trousers” rpm in Linux today can be built with a configuration option specifying no graphical user interface, or “gui=none.” However, the package dependency tools fail to accommodate this option as a configuration alternative. With this support in mind, a novice user following the stated package dependencies would load or update the extremely sizable “X11/motif/etc” packages, including the associated sizable font files. These packages may in turn require yet further package installations. As a consequence, a “waterfall” of potentially useless package dependencies, that may affect the existing applications, can typically be triggered in this form of packaging environment. The end result may not be what was originally expected, or the result may be unpredictable and situation-dependent.